package org.example.controller;

import org.example.mapper.TraCommentMapper;
import org.example.mapper.TraMemoryMapper;
import org.example.pojo.TraComment;
import org.example.pojo.TraMemory;
import org.example.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@RestController//这个类是旅游记忆数据的方法，不会跳转页面
@RequestMapping("/me")//写一个二级目录避免名字重用。
public class MemoryController {
    @Autowired
    TraMemoryMapper tmm;
    @Autowired
    TraCommentMapper tmc;
    //添加旅游记忆
    @PostMapping("/addtra")//此处用PostMapping的原因是：方法中有文件选择，而文件要用 Post方法。
    public String addTraMemory(MultipartFile file, TraMemory tm,HttpServletRequest req)//html文件中点击上传就会把数据打包发到这里；接受文件和接受其他数据的，因为TraMemory就是用来接受数据库中数据的类，相同的用法可见于User

    {
        System.out.println("nm____"+tm);
        //1.保存图片
        if (file.isEmpty()) {
            return "nofile";
        }
        try {
            byte[] bytes = file.getBytes();
            String uploadDir = "E:\\image\\";//跳转层级路径是通过"//”划分的。
            //把图像名保存到对象中。
            tm.setPic(file.getOriginalFilename());
            String path = uploadDir + file.getOriginalFilename();
            File uploadedFile = new File(path);
            file.transferTo(uploadedFile);
        } catch (IOException e) {
            e.printStackTrace();
            return "uperror";
        }
        //2.插入旅游记忆数据
        //直接从session获取当前用户id
        User user = (User)req.getSession().getAttribute("user");//从req中
        if(user!=null)
        {
            //设置当前用户的ID
            tm.setUid(user.getId());
            //设置当前时间
            LocalDateTime now = LocalDateTime.now();
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            tm.setPubtime(now.format(formatter));

            tmm.insert(tm);
            return "ok";

        }

            return "nologin";



    }


    @GetMapping("/addcom")
    public  String addComment( TraComment tm,HttpServletRequest req )
    {

        //要传入的有：traid(详细页面的序号);模仿前面添加记忆的添加时间和内容;找到当前登录的用户id
        User user = (User)req.getSession().getAttribute("user");//从req中
        if(user!=null)
        {
            //设置当前用户的ID
            tm.setUid(user.getId());
            //设置当前时间
            LocalDateTime now = LocalDateTime.now();
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            tm.setPubtime(now.format(formatter));

            tmc.insert(tm);
            return "ok";

        }

        return "nologin";

    }


















}
